MySQL 弃用 mysql_native_password 警告解决方案

16次阅读
没有评论

警告含义

mysql_native_password 是旧版密码加密插件,MySQL 8.0+ 默认推荐 caching_sha2_password,后续版本会彻底移除旧插件,只是警告不影响现有连接,但建议统一修改。

方案 1:修改已有用户加密方式(推荐,无需改配置)

登录 MySQL 客户端执行,替换 用户名@主机

sql

-- 方式1:本地root用户
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的密码';

-- 方式2:允许任意远程访问的root
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '你的密码';

-- 刷新权限生效
FLUSH PRIVILEGES;

验证是否修改成功

sql

SELECT user, host, plugin FROM mysql.user;

对应用户 plugin 字段显示 caching_sha2_password 即完成。

方案 2:全局默认使用新加密(新建用户自动生效)

1. 修改配置文件 my.cnf/my.ini

ini

[mysqld]
default_authentication_plugin=caching_sha2_password

2. 重启 MySQL 服务

bash

运行

# Linux
systemctl restart mysqld

# Windows
net stop mysql
net start mysql

之后新建用户默认就是 sha2 加密,不再弹出警告。

兼容注意事项

部分老旧客户端(旧 Navicat、PHP5、老版本 JDBC)不支持 caching_sha2_password,连接会报错:

  • 临时折中方案:继续使用 mysql_native_password(仅临时过渡,不推荐长期)

sql

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
  • 根治方案:升级客户端驱动 / 工具版本。

一键排查脚本

查看所有使用旧加密的账号,批量处理:

sql

SELECT user,host FROM mysql.user WHERE plugin='mysql_native_password';

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码